/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package managedBeans;

import dao.ProfDAO;

import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import Bean.Curso;
import Bean.Endereco;
import Bean.Escola;
import Bean.Lei;
import Bean.Plano_acao;
import Bean.Professor;
import Bean.Turno;
import javax.ejb.EJB;
import org.primefaces.context.RequestContext;
import org.primefaces.event.RowEditEvent;

/**
 *
 * @author alexandre
 */
@ManagedBean
@SessionScoped
public class ProfessorFaces implements Serializable{

    private Professor selectedProfessor;
    private Endereco selectedEndereco;
    private Curso selectedCurso;
    private Plano_acao planoacao;
    private Turno selectedTurno;
    private Lei selectedLei;
    private Escola selectedEscola;
    @EJB
    private ProfDAO profDAO;
    private List<Professor> professores;

    public Escola getSelectedEscola() {
        return selectedEscola;
    }

    public void setSelectedEscola(Escola selectedEscola) {
        this.selectedEscola = selectedEscola;
    }

    
    
    
    public Turno getSelectedTurno() {
        return selectedTurno;
    }

    public void setSelectedTurno(Turno selectedTurno) {
        this.selectedTurno = selectedTurno;
    }

    public Lei getSelectedLei() {
        return selectedLei;
    }

    public void setSelectedLei(Lei selectedLei) {
        this.selectedLei = selectedLei;
    }

    public Plano_acao getPlanoacao() {
        return planoacao;
    }

    public void setPlanoacao(Plano_acao planoacao) {
        this.planoacao = planoacao;
    }
 
    public Professor getSelectedProfessor() {
        return selectedProfessor;
    }

    public void setSelectedProfessor(Professor selectedProfessor) {
        this.selectedProfessor = selectedProfessor;
    }

    public Endereco getSelectedEndereco() {
        return selectedEndereco;
    }

    public void setSelectedEndereco(Endereco selectedEndereco) {
        this.selectedEndereco = selectedEndereco;
    }

    public Curso getSelectedCurso() {
        return selectedCurso;
    }

    public void setSelectedCurso(Curso selectedCurso) {
        this.selectedCurso = selectedCurso;
    }
    

    public List<Professor> getProfessores() {
        return professores;
    }

    public void setProfessores(List<Professor> professores) {
        this.professores = professores;
    }
    
    
    public ProfessorFaces() {
         selectedProfessor = new Professor();
        selectedEndereco = new Endereco();
        selectedCurso = new Curso();
        planoacao = new Plano_acao();
        selectedTurno = new Turno();
    }
    
    public String startaddProfessor(){
        
        selectedProfessor = new Professor();
        selectedEndereco = new Endereco();
        selectedCurso = new Curso();
        planoacao = new Plano_acao();
        selectedTurno = new Turno();
      
        
       System.out.println("Professor Criado");
        return "/admin/novo_professor.jsf";
        
    }
    
    public String startListaProfessor(){
        
        selectedProfessor = new Professor();
      selectedEndereco = new Endereco();
        selectedCurso = new Curso();
        planoacao = new Plano_acao();
        selectedTurno = new Turno();
       
        
       System.out.println("Professor Criado");
        return "/admin/listaProfessor.jsf";
        
    }
    
     public void reset(){
     RequestContext.getCurrentInstance().reset("professor:cadProf");
     
                
     
    }
    
    public void addProfessor(){
       
        try
        { 
        //SETANDO OBJETOS PARA INSERÇÃO
       selectedProfessor.setPlanoacao(planoacao);
        selectedProfessor.setEnd(selectedEndereco);
        selectedProfessor.setCurso(selectedCurso);
        selectedProfessor.setEscola(selectedEscola);
      
        //SALVANDO NO BANCO
        profDAO.add(selectedProfessor);
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "SIAC", "Dados Gravados com Sucesso!!");
        RequestContext.getCurrentInstance().showMessageInDialog(message);
        //ZERANDO O CONTEÚDO DOS OBJETOS
        selectedProfessor = new Professor();
        selectedEndereco = new Endereco();
        selectedCurso = new Curso();
         selectedTurno = new Turno();
          planoacao = new Plano_acao();
          selectedEscola = new Escola();
         
                
        }
        catch(Exception e){
            e.printStackTrace();
        }  
    }
    public String startEditProfessor(){
        return "/admin/editar_professor.jsf";
    }
    
    public void editProfessor(){
        try
        {
           
            profDAO.edit(selectedProfessor);
            
            FacesMessage message = new FacesMessage("Dados Editados com Sucesso!!");
            FacesContext.getCurrentInstance().addMessage(null, message);
            //ZERA OBJETOS
            selectedProfessor = new Professor();
            selectedEndereco = new Endereco();
            selectedCurso = new Curso();
            selectedTurno = new Turno();
            planoacao = new Plano_acao();
            selectedEscola = new Escola();
            
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
    
    public void delProfessor(){
        try
        {
           profDAO.del(selectedProfessor);
           FacesMessage message = new FacesMessage("Dados Removidos com Sucesso!!");
           FacesContext.getCurrentInstance().addMessage(null, message);
           selectedProfessor = new Professor();
           preencheProfessorPorEscola();
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
    
    
    public Professor getProfessorID(){
         Professor prof;
      
            prof = profDAO.getProfessorID(selectedProfessor.getID());
            return prof;
    }
    
    public List<Professor> getAllProfessores(){
        professores = null;
        professores = profDAO.getAllProfessor();
        return professores;
    }
    
    
    public void preencheProfessorPorEscola(){
        professores = null;
        professores = profDAO.getRetornaProfPorEscola(selectedEscola.getID());
        
    }
    
       public void onEdit(RowEditEvent event) {
        FacesMessage msg = new FacesMessage("Dados Editados!!", ((Professor) event.getObject()).getNome());

        FacesContext.getCurrentInstance().addMessage(null, msg);
    }
    
         public void onCancel(RowEditEvent event) {
        FacesMessage msg = new FacesMessage("Edição Cancelada!!", ((Professor) event.getObject()).getNome());

        FacesContext.getCurrentInstance().addMessage(null, msg);
    }
    
    
   
}
